A Human Generated Introduction to Generative AI, Part 1: Synthetic Data Generation
Recent Library Articles
Recently in the SAS Community Library: In the first of two posts on applications of generative AI, SAS' @JThompson reveals the role of generating synthetic data.
Hi may I suggest that for Macro1 lesson practice m104p05, the example of local macro, the name of the macro, scope, is very confusing (and it is good to use other name for the macro), I spent about 1 hour on it and finally figured out what was the issue that confused me. The code is as follows:
%macro scope;
%let stormtype1=Some damage;
%let stormtype2=Extensive damage;
%let stormtype3=Devastating damage;
%let stormtype4=Catastrophic damage;
%let stormtype5=Widespread catastrophic damage;
%put _user_;
%mend scope;
%scope;
After run the code, the log is as follows:
69 %macro scope;
70 %let stormtype1=Some damage;
71 %let stormtype2=Extensive damage;
72 %let stormtype3=Devastating damage;
73 %let stormtype4=Catastrophic damage;
74 %let stormtype5=Widespread catastrophic damage;
75 %put _user_;
76 %mend scope;
77 %scope;
SCOPE STORMTYPE1 Some damage
SCOPE STORMTYPE2 Extensive damage
SCOPE STORMTYPE3 Devastating damage
SCOPE STORMTYPE4 Catastrophic damage
SCOPE STORMTYPE5 Widespread catastrophic damage
GLOBAL GRAPHINIT GOPTIONS RESET=ALL GSFNAME=_GSFNAME;
GLOBAL GRAPHTERM GOPTIONS NOACCESSIBLE;
Seeing the log I had an wrong impression that global macro is explicitly displayed in the log as GLOBAL ones and local macro is explicitly displayed in the log as SCOPE ones, and I even tried at least 6 to 10 times to use %put _scope_; and %put _local_; to display my local macros in the log but failed, until I somehow luckily tried the follows:
%macro test;
%global stormtype1;
%let stormtype1=Some damage;
%let stormtype2=Extensive damage;
%let stormtype3=Devastating damage;
%let stormtype4=Catastrophic damage;
%let stormtype5=Widespread catastrophic damage;
%put _user_;
%mend test;
%test;
And get this log as follows, and then I had the correct concepts, that is:
(a) unlike global macros displayed in the log as GLOBAL ones, local macro is NOT explicitly displayed in the log as something like LOCAL ones or SCOPE ones, it is the macro name TEST,
(b) if I want to display local macros in the log, I have to use %put _user_; inside the macro, if I use %put _user_; or %put _all_; outside this macro, then only global and automatic macros are displayed, local macros are not displayed, and
(c) so there is a question, is there any statement (aside from, for example, like %put &stormtype1;) I can use here, outside the %macro test macro, to display all of the local macro only (and do not display the global and automatic ones)?
69 %macro test;
70 %global stormtype1;
71 %let stormtype1=Some damage;
72 %let stormtype2=Extensive damage;
73 %let stormtype3=Devastating damage;
74 %let stormtype4=Catastrophic damage;
75 %let stormtype5=Widespread catastrophic damage;
76 %put _user_;
77 %mend test;
78 %test;
TEST STORMTYPE2 Extensive damage
TEST STORMTYPE3 Devastating damage
TEST STORMTYPE4 Catastrophic damage
TEST STORMTYPE5 Widespread catastrophic damage
GLOBAL GRAPHINIT GOPTIONS RESET=ALL GSFNAME=_GSFNAME;
GLOBAL GRAPHTERM GOPTIONS NOACCESSIBLE;
GLOBAL STORMTYPE1 Some damage
Another thought is: use %global statement very carefully because it is very easily to get macros confused created in the session.
... View more
SAS Anti-Money Laundering does not have any out-of-the box fuzzy matching capabilities except for watchlist monitoring. This is an important component of Entity Resolution, and customers will need this functionality for resolving their own customers (and not only against watchlists). Hence it would be great to integrate SAS AI-Driven Entity Resolution (SAIDER) with SAS AML on Viya 4.
... View more
Hi SAS experts,
I was routinely converting DATE given in the format:
Number ID
Old_Format
1
12MAR2025:00:00:00.000
2
17MAR2025:00:00:00.000
using
proc sql;
select datepart(Old_Format) as New_Format format=mmddyy10.
from DATASET;
And that was working well, but suddenly I've started receiving the following error:
ERROR: Some character data was lost during transcoding in the dataset DATESET. Either the data contains characters that are not representable in the new encoding or truncation occurred during transcoding.
I am not able to see what changed.
Any ideas are appreciated.
Thank you very much for your time.
Batta
... View more
A new update is available for SAS/ACCESS Interface to Yellowbrick , version 9.4M8 : Hot Fix: R6E001 - Published 22MAY2026 , Download link for R6E001 Component name: SAS/ACCESS Interface to Yellowbrick Related SAS release: SAS 9.4 Issues addressed in R6E001 KB0045740 SAS/ACCESS® Interface to PostgreSQL and SAS/ACCESS® Interface Yellowbrick contain an OS command injection vulnerability This list of notes might be incomplete. For a complete list of issues addressed by this hot fix, visit the hot fix page for R6E001 Note: A comprehensive list of all SAS hot fixes is available from support.sas.com. You can use the SAS Hot Fix Analysis, Download, and Deployment (SASHFADD) tool to manage your SAS hot fixes.
... View more
A new update is available for SAS/ACCESS Interface to Snowflake , version 9.48 : Hot Fix: P7V002 - Published 22MAY2026 , Download link for P7V002 Component name: SAS/ACCESS Interface to Snowflake Related SAS release: SAS 9.4 Issues addressed in P7V002 KB0045724 Reading from Snowflake table might fail with a Segmentation Violation error when the LIBNAME statement contains a large READBUFF option value This list of notes might be incomplete. For a complete list of issues addressed by this hot fix, visit the hot fix page for P7V002 Note: A comprehensive list of all SAS hot fixes is available from support.sas.com. You can use the SAS Hot Fix Analysis, Download, and Deployment (SASHFADD) tool to manage your SAS hot fixes.
... View more